import { getPage, post, get } from '../../request'

const ns = '/sys/position'

export interface Position {
  positionId: string // 职位ID
  positionCode: string // 职位编号
  positionName: string // 职位名称
  seq: number // 顺序
  status: number // 状态（1启用 0禁用）
}

export const positionApi = {
  /**
   * 查询分页职位岗位列表
   * @param page
   * @param params
   * @returns
   */
  findListPage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: ns, params }, page)
  },

  /**
   * 查询单个职位岗位
   */
  findById: (id: string) => {
    return get({ url: `${ns}/${id}` })
  },

  /**
   * 保存职位岗位
   *
   * @param {*} data 职位岗位对象
   * @returns
   */
  save(data: Position) {
    return post({
      url: ns,
      data
    })
  },

  /**
   * 删除职位岗位
   *
   * @param {*} data 职位岗位id数组
   * @returns
   */
  delete(data: string[]) {
    return post({
      url: `${ns}/delete`,
      data
    })
  },

  /**
   * 查询职位岗位列表
   * @param params
   * @returns
   */
  findList: (params?: { [key: string]: any }) => {
    return get({ url: `${ns}/list`, params })
  },

  /**
   * 给职位授权菜单及权限
   *
   * @param {*} positionId
   * @param {*} data //包括4个节点trueNodeIds, trueFuncKeys, falseNodeIds, falseFuncKeys
   * @returns
   */
  authMenus: (
    positionId: string,
    addMenuIds: string[],
    addMenuIdFuncKeys: string[],
    deleteMenuIds: string[],
    deleteMenuIdFuncKeys: string[]
  ) => {
    return post({
      url: `${ns}/menu/auth`,
      data: {
        positionId,
        addMenuIds,
        addMenuIdFuncKeys,
        deleteMenuIds,
        deleteMenuIdFuncKeys
      }
    })
  },

  /**
   * 获取职位的授权菜单ID及功能ID
   * @param positionId
   * @returns
   */
  findMenus: (positionId: string) => {
    return get({ url: `${ns}/menu`, params: { positionId } })
  }
}
